/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.univalle.vista;

import co.edu.univalle.logica.ClienteLogicaLocal;
import co.edu.univalle.logica.TiposDocumentosLogicaLocal;
import co.edu.univalle.modelo.Clientes;
import co.edu.univalle.modelo.TiposDocumentos;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.selectonemenu.SelectOneMenu;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author DILOVE
 */
@ManagedBean(name = "clienteVista")
@RequestScoped
public class ClienteVista {
    @EJB
    private ClienteLogicaLocal clienteLogica;
    
    @EJB
    private TiposDocumentosLogicaLocal tiposDocumentoLogica;
    
    private InputText txtDocumento;
    private InputText txtNombre;
    private InputText txtDireccion;
    private InputText txtCorreo;
    private InputText txtTelefono;
    private SelectOneMenu cmbTipoDocumento;
    private CommandButton btnRegistrar;
    private CommandButton btnMmodificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    private List<Clientes> listaClientes;
    private ArrayList<SelectItem> tiposDocumentos = null;
    private Clientes selectedCliente;

    public Clientes getSelectedCliente() {
        return selectedCliente;
    }

    public void setSelectedCliente(Clientes selectedCliente) {
        this.selectedCliente = selectedCliente;
    }
    
    
    public ClienteVista() {
    }

    public InputText getTxtDocumento() {
        return txtDocumento;
    }

    public void setTxtDocumento(InputText txtDocumento) {
        this.txtDocumento = txtDocumento;
    }

    public InputText getTxtNombre() {
        return txtNombre;
    }

    public void setTxtNombre(InputText txtNombre) {
        this.txtNombre = txtNombre;
    }

    public InputText getTxtDireccion() {
        return txtDireccion;
    }

    public void setTxtDireccion(InputText txtDireccion) {
        this.txtDireccion = txtDireccion;
    }

    public InputText getTxtCorreo() {
        return txtCorreo;
    }

    public void setTxtCorreo(InputText txtCorreo) {
        this.txtCorreo = txtCorreo;
    }

    public InputText getTxtTelefono() {
        return txtTelefono;
    }

    public void setTxtTelefono(InputText txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    public SelectOneMenu getCmbTipoDocumento() {
        return cmbTipoDocumento;
    }

    public void setCmbTipoDocumento(SelectOneMenu cmbTipoDocumento) {
        this.cmbTipoDocumento = cmbTipoDocumento;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnMmodificar() {
        return btnMmodificar;
    }

    public void setBtnMmodificar(CommandButton btnMmodificar) {
        this.btnMmodificar = btnMmodificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public List<Clientes> getListaClientes() {
        try {
            listaClientes = clienteLogica.consultar();            
        } catch (Exception ex) {
            Logger.getLogger(ClienteVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listaClientes;
    }

    public void setListaClientes(List<Clientes> listaClientes) {
        this.listaClientes = listaClientes;
    }
    
    
    public void funcion_registrar(){
        try {
            Clientes cliente = new Clientes();
            cliente.setCliCedula(Long.parseLong(txtDocumento.getValue().toString()));
            cliente.setCliNombre(txtNombre.getValue().toString());
            cliente.setCliDireccion(txtDireccion.getValue().toString());
            cliente.setCliMail(txtCorreo.getValue().toString());
            cliente.setCliTelefono(txtTelefono.getValue().toString());
            TiposDocumentos tipo = tiposDocumentoLogica.consultarPorCodigo
                (Long.parseLong(cmbTipoDocumento.getValue().toString()));
            cliente.setTdocCodigo(tipo);
            clienteLogica.registrar(cliente);
            FacesContext.getCurrentInstance().addMessage
           ("mensaje", new FacesMessage("El Cliente se creo con exito"));
            funcion_limpiar();
        } catch (Exception ex) {
            Logger.getLogger(ClienteVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage
           ("mensaje", new FacesMessage(ex.getMessage()));
        }
    }
    
    public void funcion_modificar(){
    
    }
    
    public void funcion_eliminar(){
    
    }
    
    public void funcion_limpiar(){
        txtDocumento.setValue("");
        txtNombre.setValue("");
        txtDireccion.setValue("");
        txtCorreo.setValue("");
        txtTelefono.setValue("");
        cmbTipoDocumento.setValue("");
    }

    public ArrayList<SelectItem> getTiposDocumentos() {
        if(tiposDocumentos==null){
            try {
                tiposDocumentos = new ArrayList<>();
                List<TiposDocumentos> lista = tiposDocumentoLogica.consultar();
                for (int i = 0; i < lista.size(); i++) {
                   tiposDocumentos.add(new SelectItem
                          (lista.get(i).getTdocCodigo(),
                                  lista.get(i).getTdocNombre()));
                }
            } catch (Exception ex) {
                Logger.getLogger(ClienteVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        }
        return tiposDocumentos;
    }

    public void setTiposDocumentos(ArrayList<SelectItem> tiposDocumentos) {
        this.tiposDocumentos = tiposDocumentos;
    }
    public void seleccionar_cliente(SelectEvent event){
        Clientes seleccionado=(Clientes) event.getObject();
    }
}
